-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: split server chunk #7040
base: release/next
Are you sure you want to change the base?
feat: split server chunk #7040
Conversation
d3920f8
to
39eb3f5
Compare
fallback: { crypto: false }, | ||
extensions: ['.ts', '.tsx', '.js', '.jsx', '.mjs', '...'], | ||
plugins: [ | ||
new TsconfigPathsPlugin({ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这个是必要插件吗,理论上编译不受 tsconfig 影响
@@ -144,6 +145,20 @@ export function createServerCompiler(options: Options) { | |||
redirectImports, | |||
getRoutesFile, | |||
}, 'esbuild', { isServer }); | |||
const transformWebpackPlugins = getCompilerPlugins( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
没必要同时获取 transformWebpackPlugins 和 esbuildPlugins
esbuildResult = await esbuild.build(buildOptions); | ||
if (Array.isArray(buildOptions.entryPoints)) { | ||
// this build phase is aimed to generate .ice/ | ||
esbuildResult = await esbuild.build(buildOptions); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
为啥多 entry 必定是 esbuild
], | ||
}, | ||
{ | ||
test: ASSETS_RE, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
webpack 大部分规则是不是跟 csr 对齐就好了,没必要单独这里维护,对于 node 端而言主要是产物 target 和样式处理规则的差异
具体改动如下:
@ice/app
requireHooks
新增一些 webpack 文件(对应后续 @ice/bundles 的修改),并且支持拦截对应.js结尾的路径
server 产物的构建逻辑
原先使用 esbuild 进行了两次操作:
node_modules/.cache/default_defineAppConfig_app.mjs
(保留).ice/
目录生成服务端产物,这部分改为由 webpack 处理,判断的条件是 entry 为非数组
配置项
服务端构建逻辑通过配置项开启,默认还是 esbuild 处理,当配置如下时开启:
@ice/bundles
新增一些 webpack 的内置文件的导出,由
requireHooks
保证使用的是同一份,供 ICE 插件使用